From 16029f550644e49a3f1f44261074e6bec0450aa1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Thu, 30 Aug 2018 14:26:37 +0200 Subject: [PATCH] Revert "special case all 0 to map to all 0 in nonpremul" This reverts commit 18dea5104f3de79af5e9641a0ef47435b112d44b. We want to be able to do component by component average/weighting of remultiplied values, by breaking the floor for black alpha zero we break the consistency of such arithmetic. --- babl/base/model-gray.c | 14 -------------- babl/base/model-rgb.c | 14 -------------- extensions/double.c | 4 ---- extensions/fast-float.c | 2 -- extensions/float.c | 8 -------- extensions/gegl-fixups.c | 4 ---- extensions/sse2-float.c | 13 ------------- 7 files changed, 59 deletions(-) diff --git a/babl/base/model-gray.c b/babl/base/model-gray.c index ecbd48c..5286fd5 100644 --- a/babl/base/model-gray.c +++ b/babl/base/model-gray.c @@ -479,8 +479,6 @@ rgba_to_gray_alpha_premultiplied (Babl *conversion, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (red == 0.0 && green == 0.0 && blue == 0.0) - alpha = 0.0; } luminance = red * RGB_LUMINANCE_RED + @@ -513,20 +511,10 @@ non_premultiplied_to_premultiplied (Babl *conversion, double alpha = *(double *) src[src_bands-1]; if (alpha < BABL_ALPHA_FLOOR) { - int non_zero_components = 0; if (alpha >= 0.0f) alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - - for (band = 0; band < src_bands - 1; band++) - { - if (*(double *) src[band] != 0.0) - non_zero_components++; - } - if (non_zero_components) - alpha = 0.0; - } for (band = 0; band < src_bands - 1; band++) @@ -598,8 +586,6 @@ rgba2gray_nonlinear_premultiplied (Babl *conversion, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (red == 0.0 && green == 0.0 && blue == 0.0) - alpha = 0.0; } luminance = red * RGB_LUMINANCE_RED + diff --git a/babl/base/model-rgb.c b/babl/base/model-rgb.c index d4f4daa..39c8afb 100644 --- a/babl/base/model-rgb.c +++ b/babl/base/model-rgb.c @@ -332,16 +332,10 @@ non_premultiplied_to_premultiplied (Babl *conversion, if (alpha < BABL_ALPHA_FLOOR) { - int non_zero_components = 0; if (alpha >= 0.0) alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - for (band = 0 ; band< src_bands-1; band++) - if (*(double *) src[band] != 0.0) - non_zero_components++; - if (non_zero_components == 0) - alpha = 0.0; } for (band = 0; band < src_bands - 1; band++) @@ -414,10 +408,6 @@ rgba2rgba_nonlinear_premultiplied (Babl *conversion, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (((double *) src)[0] == 0.0 && - ((double *) src)[1] == 0.0 && - ((double *) src)[2] == 0.0) - alpha = 0.0; } ((double *) dst)[0] = babl_trc_from_linear (trc[0], ((double *) src)[0]) * alpha; @@ -597,10 +587,6 @@ rgba2rgba_perceptual_premultiplied (Babl *conversion, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (((double *) src)[0] == 0.0 && - ((double *) src)[1] == 0.0 && - ((double *) src)[2] == 0.0) - alpha = 0.0; } ((double *) dst)[0] = babl_trc_from_linear (trc, ((double *) src)[0]) * alpha; diff --git a/extensions/double.c b/extensions/double.c index 7551ab2..502a466 100644 --- a/extensions/double.c +++ b/extensions/double.c @@ -48,10 +48,6 @@ conv_rgbaD_linear_rgbAD_gamma (const Babl *conversion,unsigned char *src, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (fsrc[0] == 0.0f && - fsrc[1] == 0.0f && - fsrc[2] == 0.0f) - alpha = 0.0f; } *fdst++ = babl_trc_from_linear (trc[0], *fsrc++) * alpha; *fdst++ = babl_trc_from_linear (trc[1], *fsrc++) * alpha; diff --git a/extensions/fast-float.c b/extensions/fast-float.c index fcc1b67..5540185 100644 --- a/extensions/fast-float.c +++ b/extensions/fast-float.c @@ -315,8 +315,6 @@ conv_rgbaF_linear_rgbAF_gamma (const Babl *conversion,unsigned char *src, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (red == 0.0f && green == 0.0f && blue == 0.0f) - alpha = 0.0f; } *fdst++ = linear_to_gamma_2_2_lut (red) * alpha; *fdst++ = linear_to_gamma_2_2_lut (green) * alpha; diff --git a/extensions/float.c b/extensions/float.c index 8ffd7ab..eaa38f5 100644 --- a/extensions/float.c +++ b/extensions/float.c @@ -49,10 +49,6 @@ conv_rgbaF_linear_rgbAF_nonlinear (const Babl *conversion,unsigned char *src, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (fsrc[0] == 0.0f && - fsrc[1] == 0.0f && - fsrc[2] == 0.0f) - alpha = 0.0f; } *fdst++ = babl_trc_from_linear (trc[0], *fsrc++) * alpha; *fdst++ = babl_trc_from_linear (trc[1], *fsrc++) * alpha; @@ -80,10 +76,6 @@ conv_rgbaF_linear_rgbAF_perceptual (const Babl *conversion,unsigned char *src, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (fsrc[0] == 0.0f && - fsrc[1] == 0.0f && - fsrc[2] == 0.0f) - alpha = 0.0f; } *fdst++ = babl_trc_from_linear (trc_srgb, *fsrc++) * alpha; *fdst++ = babl_trc_from_linear (trc_srgb, *fsrc++) * alpha; diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c index 8a8fe08..70ef2d3 100644 --- a/extensions/gegl-fixups.c +++ b/extensions/gegl-fixups.c @@ -386,10 +386,6 @@ conv_rgbaF_rgbAF (const Babl *conversion,unsigned char *srcc, alpha = BABL_ALPHA_FLOOR; else if (alpha >= -BABL_ALPHA_FLOOR) alpha = -BABL_ALPHA_FLOOR; - if (src[0] == 0.0f && - src[1] == 0.0f && - src[2] == 0.0f) - alpha = 0.0f; } dst[0] = src[0] * alpha; dst[1] = src[1] * alpha; diff --git a/extensions/sse2-float.c b/extensions/sse2-float.c index 24aaa7b..02a8c2d 100644 --- a/extensions/sse2-float.c +++ b/extensions/sse2-float.c @@ -60,11 +60,6 @@ conv_rgbaF_linear_rgbAF_linear (const Babl *conversion,const float *src, float * ((float *)s)[3] = BABL_ALPHA_FLOOR; else ((float *)s)[3] = -BABL_ALPHA_FLOOR; - - if (((float *)s)[0] == 0.0f && - ((float *)s)[1] == 0.0f && - ((float *)s)[2] == 0.0f) - ((float *)s)[3] = 0.0f; } if (alpha1 < BABL_ALPHA_FLOOR) { @@ -72,10 +67,6 @@ conv_rgbaF_linear_rgbAF_linear (const Babl *conversion,const float *src, float * ((float *)s)[7] = BABL_ALPHA_FLOOR; else ((float *)s)[7] = -BABL_ALPHA_FLOOR; - if (((float *)s)[4] == 0.0f && - ((float *)s)[5] == 0.0f && - ((float *)s)[6] == 0.0f) - ((float *)s)[7] = 0.0f; } { __v4sf rbaa0, rbaa1; @@ -118,10 +109,6 @@ conv_rgbaF_linear_rgbAF_linear (const Babl *conversion,const float *src, float * a = BABL_ALPHA_FLOOR; else if (a >= -BABL_ALPHA_FLOOR) a = -BABL_ALPHA_FLOOR; - if (src[0] == 0.0f && - src[1] == 0.0f && - src[2] == 0.0f) - a = 0.0f; } dst[0] = src[0] * a; dst[1] = src[1] * a; -- 2.30.2